#ifndef BASE_H
#define BASE_H

#include "gd32f4xx.h"
#include <stdint.h>

#include "gd32f4xx.h"

void delay_ms(uint32_t ms);
uint32_t millis (void);

typedef enum {LED0, LED1, LED2, LED3} led_t;
void led_init (led_t led);
void led_set (led_t led, int on);
int led_is_on (led_t led);

static inline void led_toggle (led_t led) {
    led_set(led, led_is_on(led) ? 0 : 1);
}

void key_init (void);
int key_pressed (void);

int uart_init (void);
int uart_available (void);
void uart_write (uint8_t ucch);
uint8_t uart_read (void);


void hardware_init(void);

#endif